﻿
using System;
using System.Runtime.Serialization;
using V82;
using V82.Перечисления;//Ссылка;
namespace V82.Перечисления//Ссылка
{
	[DataContract]
	public enum ВидыРезервов
	{
		[NonSerialized]
		ПустаяСсылка = - 1,
		[EnumMember(Value = "{\"Ссылка\":\"7741cdac-5a88-4f00-89a8-bb248029f68d\", \"Представление\":\"ПоСомнительнымДолгам\"}")]
		ПоСомнительнымДолгам = 0,//По сомнительным долгам
		[EnumMember(Value = "{\"Ссылка\":\"2f520f1b-7ab5-44b5-a01b-93d874825e5a\", \"Представление\":\"ПодОбесцениваниеЦенныхБумаг\"}")]
		ПодОбесцениваниеЦенныхБумаг = 1,//Под обесценивание ценных бумаг
		[EnumMember(Value = "{\"Ссылка\":\"0a5f34bc-112d-4a48-b3d8-af4eb7af8861\", \"Представление\":\"НаПокрытиеИныхЗатрат\"}")]
		НаПокрытиеИныхЗатрат = 2,//На покрытие иных затрат
	}
	public static partial class ВидыРезервов_Значения//:ПеречислениеСсылка
	{
		public static readonly Guid ПоСомнительнымДолгам = new Guid("24bba889-2980-8df6-4f00-5a887741cdac");//По сомнительным долгам
		public static readonly Guid ПодОбесцениваниеЦенныхБумаг = new Guid("d8931ba0-8274-5a5e-44b5-7ab52f520f1b");//Под обесценивание ценных бумаг
		public static readonly Guid НаПокрытиеИныхЗатрат = new Guid("4eafd8b3-afb7-6188-4a48-112d0a5f34bc");//На покрытие иных затрат
		public static ВидыРезервов Получить(this ВидыРезервов Значение, byte[] Ссылка)
		{
			return Получить(Значение, new Guid(Ссылка));
		}
		public static ВидыРезервов Получить(this ВидыРезервов Значение, Guid Ссылка)
		{
			if(Ссылка == ПоСомнительнымДолгам)
			{
				return ВидыРезервов.ПоСомнительнымДолгам;
			}
			else if(Ссылка == ПодОбесцениваниеЦенныхБумаг)
			{
				return ВидыРезервов.ПодОбесцениваниеЦенныхБумаг;
			}
			else if(Ссылка == НаПокрытиеИныхЗатрат)
			{
				return ВидыРезервов.НаПокрытиеИныхЗатрат;
			}
			return ВидыРезервов.ПустаяСсылка;
		}
		public static byte[] Ключ(this ВидыРезервов Значение)
		{
			return Ссылка(Значение).ToByteArray();
		}
		public static Guid Ссылка(this ВидыРезервов Значение)
		{
			switch (Значение)
			{
				case ВидыРезервов.ПоСомнительнымДолгам: return ПоСомнительнымДолгам;
				case ВидыРезервов.ПодОбесцениваниеЦенныхБумаг: return ПодОбесцениваниеЦенныхБумаг;
				case ВидыРезервов.НаПокрытиеИныхЗатрат: return НаПокрытиеИныхЗатрат;
			}
			return Guid.Empty;
		}
	}
}